#ifndef _CEDD_H_
#define _CEDD_H_

#pragma once

#include <vector>
#include <math.h>
#include "opencv2/imgproc/imgproc.hpp"

#include "Fuzzy10Bin.h"
#include "Fuzzy24Bin.h"
#include "CEDDQuant.h"
#include "RGB2HSV.h"

#ifndef MIN
#define MIN(a,b)  ((a) > (b) ? (b) : (a))
#endif

#ifndef MAX
#define MAX(a,b)  ((a) < (b) ? (b) : (a))
#endif

using namespace std;


class CEDD
{
public:
	CEDD(void);
	~CEDD(void);

	CEDD(double Th0, double Th1, double Th2, double Th3,bool CompactDescriptor);

	vector<double> Apply(cv::Mat& srcImg);

public:
	struct MaskResults
	{
		double Mask1;
		double Mask2;
		double Mask3;
		double Mask4;
		double Mask5;
	};

	struct Neighborhood
	{
		double Area1;
		double Area2;
		double Area3;
		double Area4;
	};

	double	_T0;
	double	_T1;
	double	_T2;
	double	_T3;
	bool	_Compact;

};

#endif